﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Dominio;
using Servicios;

namespace EstadisticaProduce.Acuicultura
{
    public partial class frmMovimientoProducto : ObjectPage //System.Web.UI.Page
    {
        #region Variables
        clsAcuicultura _consultas = new clsAcuicultura();
        string err_mens = string.Empty;
        #endregion

        #region Métodos
        private void muestraPnlMensaje(string _smens, Int32 _iopcion)
        {
            if (_iopcion == 1)
            {
                pnlMensaje.Visible = true;
                lblMensaje.Text = _smens;
            }
            else
            {
                pnlMensaje.Visible = false;
                lblMensaje.Text = string.Empty;
            }
        }
        private void cargaTipoProducto() 
        {
            List<domConsultasGenerales> lst = new List<domConsultasGenerales>();

            lst = _consultas.ListaTipoProducto();
            ddlTipoProducto.DataSource = lst;
            ddlTipoProducto.DataTextField = "des_producto";
            ddlTipoProducto.DataValueField = "cod_producto";
            ddlTipoProducto.DataBind();
            Utilidades.DropDownListAnnadir(ref ddlTipoProducto, "0", "- Seleccione", 0);
        }
        private void cargaGrilla()
        {
            try
            {
                decimal COD_MOV_PRODUCTIVO = -1;
                string COD_EMPRESA = hdncodempresa.Value;
                string COD_PERIODO = hdnperiodo.Value;
                Hashtable ht = new Hashtable();
                ht.Add("COD_MOV_PRODUCTIVO", COD_MOV_PRODUCTIVO);
                ht.Add("COD_EMPRESA", COD_EMPRESA);
                ht.Add("COD_PERIODO", COD_PERIODO);

                List<domConsultasGenerales> lst = new List<domConsultasGenerales>();
                lst = _consultas.ListaRegistroMovimientoProducto(ht);

                gvRegistro.DataSource = lst;
                gvRegistro.DataBind();
            }
            catch (Exception ex)
            {
                err_mens = "Error al cargar grilla:" + ex.Message;
                muestraPnlMensaje(err_mens, 1);
            }
            finally
            {
                muestraPnlMensaje(string.Empty, -1);
            }
        }
        private void GrabarRegistroProduccion()
        {
            Int32 iresultado = 0;
            string saccion = hdnaccion.Value;
            string COD_PERIODO = hdnperiodo.Value;
            string COD_EMPRESA = hdncodempresa.Value;
            decimal COD_MOV_PRODUCTIVO = Convert.ToDecimal(hdncodregistro.Value);
            decimal COD_PRODUCTO = Convert.ToDecimal(ddlTipoProducto.SelectedValue);
            string DES_PRODUCTO = ddlTipoProducto.SelectedItem.Text;
            decimal STOCK_INI = Convert.ToDecimal(string.IsNullOrEmpty(txtStockFinal.Text) == true ? "0" : txtStockFinal.Text);
            decimal PROD_MES = Convert.ToDecimal(String.IsNullOrEmpty(txtProduccion.Text) == true ? "0" : txtProduccion.Text);
            decimal COMP_MES = Convert.ToDecimal(string.IsNullOrEmpty( txtCompraMes.Text)==true?"0" : txtCompraMes.Text );
            decimal TERCERO_INGRESO = Convert.ToDecimal(string.IsNullOrEmpty( txtTerceroIngreso.Text )==true?"0":txtTerceroIngreso.Text );
            decimal CNT_OTROS = Convert.ToDecimal(string.IsNullOrEmpty(txtOtros.Text) == true ? "0" : txtOtros.Text);
            decimal VTA_MES = Convert.ToDecimal(string.IsNullOrEmpty(txtVentaMes.Text) == true ? "0" : txtVentaMes.Text);
            decimal EXPORTACION = Convert.ToDecimal(string.IsNullOrEmpty(txtExportacion.Text) == true ? "0" : txtExportacion.Text);
            decimal TERCERO_SALIDA = Convert.ToDecimal(string.IsNullOrEmpty(txtTerceroSalida.Text) == true ? "0" : txtTerceroSalida.Text);
            decimal MERMAS = Convert.ToDecimal(string.IsNullOrEmpty( txtMermas.Text) ==true? "0":txtMermas.Text )  ;
            string USE_REG = UsuarioSistema.cod_Usuario;// "U09717";
            string USE_MOD = USE_REG;
            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("COD_MOV_PRODUCTIVO", COD_MOV_PRODUCTIVO);
                ht.Add("COD_PERIODO", COD_PERIODO);
                ht.Add("COD_EMPRESA", COD_EMPRESA);
                ht.Add("COD_PRODUCTO", COD_PRODUCTO);
                ht.Add("DES_PRODUCTO", DES_PRODUCTO);
                ht.Add("STOCK_INI", STOCK_INI);
                ht.Add("PROD_MES", PROD_MES);
                ht.Add("COMP_MES", COMP_MES);
                ht.Add("TERCERO_INGRESO", TERCERO_INGRESO);
                ht.Add("CNT_OTROS", CNT_OTROS);
                ht.Add("VTA_MES", VTA_MES);
                ht.Add("EXPORTACION", EXPORTACION);
                ht.Add("TERCERO_SALIDA", TERCERO_SALIDA);
                ht.Add("MERMAS", MERMAS);
                ht.Add("USE_REG", USE_REG);
                ht.Add("USE_MOD", USE_MOD);

                if (hdncodregistro.Value != "0" && saccion == "EDITAR")
                {
                    iresultado = _consultas.ActualizaRegistroMovimientoProducto(ht);
                }
                else
                {
                    iresultado = _consultas.InsertaRegistroMovimientoProducto(ht);
                }
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
                iresultado = 99;
            }
            finally
            {
                if (iresultado == 99)
                {
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                }
                else
                {
                    limpiaFormulario();
                    cargaGrilla();
                }
            }
        }
        private void limpiaFormulario()
        {
            hdnaccion.Value = string.Empty;
            hdncodregistro.Value = "0";
            txtCompraMes.Text = "0.00";
            txtExportacion.Text = "0.00";
            txtMermas.Text = "0.00";
            txtOtros.Text = "0.00";

            txtProduccion.Text = "0.00";
            txtStockFinal.Text = "0.00";
            txtTerceroIngreso.Text = "0.00";
            txtTerceroSalida.Text = "0.00";
            txtVentaMes.Text = "0.00";

            Utilidades.DropDownListSelectValue(ref ddlTipoProducto, "0");

        }
        private void cargaFormulario(domConsultasGenerales _be)
        {
            /*
            cod_mov_productivo,codperiodo,codempresa,nombrecomercial,cod_producto,
            * des_producto,stock_ini,prod_mes,comp_mes,tercero_ingreso,
            * cnt_otros,vta_mes,exportacion,tercero_salida,mermas,estado
            */
            txtCompraMes.Text = _be.comp_mes.ToString();
            txtExportacion.Text = _be.exportacion.ToString();
            txtMermas.Text = _be.mermas.ToString();
            txtOtros.Text = _be.cnt_otros.ToString();

            txtProduccion.Text = _be.prod_mes.ToString();
            txtStockFinal.Text = _be.stock_ini.ToString();
            txtTerceroIngreso.Text = _be.tercero_ingreso.ToString();
            txtTerceroSalida.Text = _be.tercero_salida.ToString();
            txtVentaMes.Text = _be.vta_mes.ToString();

            Utilidades.DropDownListSelectValue(ref ddlTipoProducto, _be.cod_producto.ToString());

            hdnaccion.Value = "EDITAR";
            hdncodregistro.Value = _be.cod_mov_productivo.ToString();


        }
        private void eliminaRegistro(domConsultasGenerales _be)
        {
            decimal COD_MOV_PRODUCTIVO = _be.cod_mov_productivo;
            Int32 iresultado = 0;
            try
            {
                Hashtable ht = new Hashtable();
                ht.Add("COD_MOV_PRODUCTIVO", COD_MOV_PRODUCTIVO);

                iresultado = _consultas.EliminaRegistroMovimientoProducto(ht);
            }
            catch (Exception ex)
            {
                err_mens = ex.Message;
                iresultado = 99;
            }
            finally
            {
                if (iresultado == 99)
                {
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                }
                else
                {
                    err_mens = "Se eliminó el registro correctamente";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "err_msg", "ShowError('" + err_mens + "');", true);
                    limpiaFormulario();
                    cargaGrilla();
                }
            }
        }
        #endregion 
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                hdnperiodo.Value = UsuarioSistema.cod_Periodo;
                hdncodestablecimiento.Value = "1";
                hdncodempresa.Value = UsuarioSistema.cod_Empresa;
                hdncodregistro.Value = "0";
                hdnaccion.Value = string.Empty;
                cargaTipoProducto();
                cargaGrilla();
            }
        }

        protected void btnGrabar_Click(object sender, EventArgs e)
        {
            try
            {
                GrabarRegistroProduccion();
            }
            catch (Exception ex) { }
        }

        protected void gvRegistro_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            try
            {
                if (e.CommandName == "x_edit" || e.CommandName == "x_delete")
                {
                    GridViewRow row = (GridViewRow)((Control)e.CommandSource).Parent.Parent;
                    int Index = row.RowIndex;

                    if (e.CommandName == "x_edit")
                    {
                        /*
                       cod_mov_productivo,codperiodo,codempresa,nombrecomercial,cod_producto,
                         * des_producto,stock_ini,prod_mes,comp_mes,tercero_ingreso,
                         * cnt_otros,vta_mes,exportacion,tercero_salida,mermas,estado
                         */
                        domConsultasGenerales be = new domConsultasGenerales();
                        be.cod_mov_productivo = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_mov_productivo"]);
                        be.codperiodo = gvRegistro.DataKeys[Index].Values["codperiodo"].ToString();
                        be.codempresa = gvRegistro.DataKeys[Index].Values["codempresa"].ToString();
                        be.cod_producto = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_producto"]);
                        be.des_producto = gvRegistro.DataKeys[Index].Values["des_producto"].ToString();
                        be.stock_ini = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["stock_ini"]);
                        be.prod_mes = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["prod_mes"]);
                        be.comp_mes = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["comp_mes"]);
                        be.tercero_ingreso = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["tercero_ingreso"]);
                        be.cnt_otros = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cnt_otros"]);

                        be.vta_mes = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["vta_mes"]);
                        be.exportacion = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["exportacion"]);
                        be.tercero_salida = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["tercero_salida"]);
                        be.mermas = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["mermas"]);

                        limpiaFormulario();
                        cargaFormulario(be);
                    }
                    else
                    {
                        domConsultasGenerales be = new domConsultasGenerales();
                        be.cod_mov_productivo = Convert.ToDecimal(gvRegistro.DataKeys[Index].Values["cod_mov_productivo"]);

                        eliminaRegistro(be);
                    }
                }
            }
            catch (Exception ex)
            {
                err_mens = ex.StackTrace.ToString();
            }
        }

        protected void btnLimpia_Click(object sender, EventArgs e)
        {
            limpiaFormulario();
        }
    }
}